package com.amoyt.project.domain.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 项目审批主表（存储申请信息）
 * </p>
 *
 * @author AmoyT
 * @since 2025-08-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(description = "项目审批主表（存储申请信息）")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ProjectApproval implements Serializable {

  private static final long serialVersionUID = 1L;

  @Schema(description = "主键")
  @TableId(value = "project_id", type = IdType.INPUT)
  private String projectId;

  @Schema(description = "项目编号")
  private String projectNum;

  @Schema(description = "申请项目名称")
  private String projectName;

  @Schema(description = "项目级别（town-乡镇/region-县区等）")
  private String projectLevel;

  @Schema(description = "申请单位（如“XX镇政府”）")
  private String applyUnit;

  @Schema(description = "申请内容（项目背景、方案等）")
  private String applyContent;

  @Schema(description = "项目资金")
  private Long applyMoney;

  @Schema(description = "申请发起时间")
  private Date applyTime;

  @Schema(description = "当前审批级别")
  private String currentApprovalLevel;

  @Schema(description = "整体状态（pending-待审批/underApproval-审批中/passed-通过/rejected-驳回）")
  private String overallStatus;

  @Schema(description = "创建人（申请人id）")
  private String createBy;

  @Schema(description = "记录创建时间")
  private LocalDateTime createTime;

  @Schema(description = "更新人")
  private String updateBy;

  @Schema(description = "更新时间")
  private LocalDateTime updateTime;

  @Schema(description = "逻辑删除")
  private Integer deleted;
}
